منابع مشابه
Type-Indexed Data Types
A polytypic function is a function that can be instantiated on many data types to obtain data type speci c functionality. Examples of polytypic functions are the functions that can be derived in Haskell, such as show , read , and ( ). More advanced examples are functions for digital searching, pattern matching, uni cation, rewriting, and structure editing. For each of these problems, we not onl...
متن کاملMonad Factory: Type-Indexed Monads
Monads provide a greatly useful capability to pure languages in simulating side-effects, but implementations such as the Monad Transformer Library [1] in Haskell prohibit reuse of those side-effects such as threading through two different states without some explicit workaround. Monad Factory provides a straightforward solution for opening the non-proper morphisms by indexing monads at both the...
متن کاملImplementing Type Classes using Type-Indexed Functions∗
Type classes [19, 7] are, according to some authors, ‘the most beloved feature of Haskell’. They provide a clean, modular and elegant way of writing overloaded functions. Type classes are usually implemented using dictionaries—data structures containing functions and other dictionaries—which are passed as extra arguments to the overloaded functions. Thus, programs using type classes are transla...
متن کاملStitch: The Sound Type-Indexed Type Checker (Author's Cut)
RICHARD A. EISENBERG, Bryn Mawr College, USA A classic example of the power of generalized algebraic datatypes (GADTs) to verify a delicate implementation is the type-indexed expression AST. This functional pearl refreshes this example, casting it in modern Haskell using many of GHC’s bells and whistles. The Stitch interpreter is a full executable interpreter, with a parser, type checker, commo...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Mathematical Structures in Computer Science
سال: 2020
ISSN: 0960-1295,1469-8072
DOI: 10.1017/s0960129520000092